package com.itheima.wisdomnext.controller;

import com.itheima.wisdomnext.entity.Report;
import com.itheima.wisdomnext.entity.ReportReason;
import com.itheima.wisdomnext.entity.Result.ResponseResult;
import com.itheima.wisdomnext.service.ReportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@CrossOrigin // 允许跨域请求
@RestController // 声明这是一个 RESTful 控制器
@RequestMapping("/api/reports") // 设置请求路径前缀为 /api/reports
public class ReportController {

    @Autowired
    private ReportService reportService; // 注入举报服务层

    /**
     * 添加举报记录
     * @param report 举报对象，包含举报的详细信息
     * @return 返回操作结果
     */
    @PostMapping("/add")
    public ResponseResult<Object> addReport(@RequestBody Report report) throws Exception{
        // 调用服务层添加举报记录
        reportService.addReport(report);
        // 返回成功的响应
        return ResponseResult.success("申请举报成功！", null);
    }

    /**
     * 获取所有举报记录
     * @return 返回所有举报记录的列表
     */
    @GetMapping("/all")
    public ResponseResult<List<Report>> getAllReports() {
        // 获取所有举报记录
        List<Report> reports = reportService.getAllReports();
        // 返回成功的响应，包含举报记录
        return ResponseResult.success("获取举报记录成功！", reports);
    }

    /**
     * 根据用户 ID 获取该用户的所有举报记录
     * @param reporterId 用户 ID
     * @return 返回该用户的所有举报记录
     */
    @GetMapping("/user/{reporterId}")
    public ResponseResult<List<Report>> getReportsByUserId(@PathVariable Integer reporterId) {
        // 获取指定用户 ID 的举报记录
        List<Report> reports = reportService.getReportsByUserId(reporterId);
        // 返回成功的响应，包含该用户的举报记录
        return ResponseResult.success("获取用户举报记录成功！", reports);
    }

    /**
     * 查询所有举报理由类型
     * @return 返回所有举报理由类型的列表
     */
    @GetMapping("/reasons")
    public ResponseResult<List<ReportReason>> getAllReportReasons() {
        // 获取所有举报理由类型
        List<ReportReason> reasons = reportService.getAllReportReasons();
        // 返回成功的响应，包含举报理由类型列表
        return ResponseResult.success("获取举报理由类型成功！", reasons);
    }
}
